/*
 * author: VDaras
 */

#ifndef BLITTABLE_H
#define	BLITTABLE_H

#include "Surface.h"

/*
 * Abstract class providing an interface for surfaces that can blit themselves
 * on other surfaces. This class violates sdl::Surface's encapsulation in some
 * ways but I couldn't come up with a better design :).
 */

namespace sdl
{

class Blittable : public Surface
{
public:
    Blittable();
    virtual ~Blittable() = 0;

    void SetAlpha(Uint8 alpha);
    void SetColorKey(const Color &color);
    void Blit(int x, int y, Surface *target, const SDL_Rect *clip = NULL) const;
};

};
#endif	/* BLITTABLE_H */

